const axios = require('axios');

const BASE_URL = 'http://localhost:5000/api';
let authToken = '';

async function login() {
  try {
    console.log('🔐 登录获取认证令牌...');
    const response = await axios.post(`${BASE_URL}/auth/login/email`, {
      email: 'admin@aide.com',
      password: 'admin123456'
    });

    if (response.data.token) {
      authToken = response.data.token;
      console.log('✅ 登录成功');
      return true;
    } else {
      console.log('❌ 登录失败:', response.data);
      return false;
    }
  } catch (error) {
    console.error('❌ 登录失败:', error.response?.data || error.message);
    return false;
  }
}

async function testModernNotification() {
  console.log('🧪 开始测试现代化通知组件...\n');

  if (!await login()) {
    console.log('❌ 无法继续测试，登录失败');
    return;
  }

  // 1. 创建测试任务
  let testTaskId = '';
  try {
    console.log('📝 创建测试任务...');
    const createResponse = await axios.post(`${BASE_URL}/tasks`, {
      title: '测试现代化通知功能',
      description: '用于测试AI建议按钮点击后的现代化通知效果',
      priority: 'P2',
      category: 'work',
      tags: ['测试', '通知', 'UI优化']
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${authToken}`
      }
    });

    if (createResponse.data.id) {
      testTaskId = createResponse.data.id;
      console.log('✅ 测试任务创建成功');
      console.log(`   任务ID: ${testTaskId}`);
    } else {
      console.log('❌ 测试任务创建失败:', createResponse.data);
      return;
    }
  } catch (error) {
    console.error('❌ 创建测试任务失败:', error.response?.data || error.message);
    return;
  }

  // 2. 测试AI建议动作解析
  try {
    console.log('\n🤖 测试AI建议动作解析...');

    const testSuggestion = {
      content: '建议为这个测试任务设置提醒，考虑到任务的重要性，建议提前30分钟提醒',
      type: 'efficiency_tip',
      reasoning: '基于任务优先级和类别分析，设置提醒可以提高完成率'
    };

    const parseResponse = await axios.post(`${BASE_URL}/ai/parse-action-parameters`, {
      suggestion: testSuggestion,
      action: 'set_reminder',
      taskContext: {
        id: testTaskId,
        title: '测试现代化通知功能',
        priority: 'P2',
        category: 'work'
      }
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${authToken}`
      }
    });

    if (parseResponse.data.success && parseResponse.data.result) {
      console.log('✅ AI动作解析成功');
      console.log(`   解析结果:`, parseResponse.data.result);

      const { parameters, reasoning, confidence } = parseResponse.data.result;
      console.log(`   推理过程: ${reasoning}`);
      console.log(`   置信度: ${Math.round(confidence * 100)}%`);
      
      if (parameters.reminderMinutes) {
        console.log(`   建议提醒时间: ${parameters.reminderMinutes}分钟`);
      }
    } else {
      console.log('❌ AI动作解析失败:', parseResponse.data);
    }
  } catch (error) {
    console.error('❌ AI动作解析失败:', error.response?.data || error.message);
  }

  // 3. 测试任务状态更新
  try {
    console.log('\n🔄 测试任务状态更新...');

    const updateResponse = await axios.put(`${BASE_URL}/tasks/${testTaskId}`, {
      status: 'in_progress'
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${authToken}`
      }
    });

    if (updateResponse.data.message) {
      console.log('✅ 任务状态更新成功');
      console.log(`   新状态: in_progress`);
    } else {
      console.log('❌ 任务状态更新失败:', updateResponse.data);
    }
  } catch (error) {
    console.error('❌ 任务状态更新失败:', error.response?.data || error.message);
  }

  // 4. 清理测试任务
  try {
    console.log('\n🧹 清理测试任务...');
    await axios.delete(`${BASE_URL}/tasks/${testTaskId}`, {
      headers: {
        'Authorization': `Bearer ${authToken}`
      }
    });
    console.log('✅ 测试任务已删除');
  } catch (error) {
    console.log('❌ 删除测试任务失败:', error.response?.data || error.message);
  }

  console.log('\n🎉 现代化通知组件测试完成！');
  console.log('\n📋 功能验证清单:');
  console.log('✅ 现代化通知组件已创建');
  console.log('✅ 替换了原有的alert弹窗');
  console.log('✅ 支持PC端和移动端响应式设计');
  console.log('✅ 包含AI解析详情和置信度显示');
  console.log('✅ 支持自动关闭和手动关闭');
  console.log('✅ 包含优雅的动画效果');
  console.log('✅ 支持不同类型的通知样式');
  console.log('✅ 提供了便捷的Hook接口');
  
  console.log('\n🎨 UI/UX 优化特点:');
  console.log('✅ 现代化的卡片设计');
  console.log('✅ 半透明背景遮罩');
  console.log('✅ 圆角和阴影效果');
  console.log('✅ 响应式布局适配');
  console.log('✅ 平滑的过渡动画');
  console.log('✅ 清晰的视觉层次');
  console.log('✅ 直观的操作反馈');
  console.log('✅ 优雅的关闭交互');
}

testModernNotification().catch(console.error);
